/*
 * XML Type:  Invoice
 * Namespace: http://ofx.net/types/2003/04
 * Java type: net.ofx.types.x2003.x04.Invoice
 *
 * Automatically generated - do not modify.
 */
package net.ofx.types.x2003.x04;


/**
 * An XML Invoice(@http://ofx.net/types/2003/04).
 *
 * This is a complex type.
 */
public interface Invoice extends org.apache.xmlbeans.XmlObject
{
    public static final org.apache.xmlbeans.SchemaType type = (org.apache.xmlbeans.SchemaType)schema.system.s3A74FF4CC3627C5B0D40068015746F8A.TypeSystemHolder.typeSystem.resolveHandle("invoice4dc7type");
    
    /**
     * Gets the "INVNO" element
     */
    java.lang.String getINVNO();
    
    /**
     * Gets (as xml) the "INVNO" element
     */
    net.ofx.types.x2003.x04.InvestmentNumberType xgetINVNO();
    
    /**
     * Sets the "INVNO" element
     */
    void setINVNO(java.lang.String invno);
    
    /**
     * Sets (as xml) the "INVNO" element
     */
    void xsetINVNO(net.ofx.types.x2003.x04.InvestmentNumberType invno);
    
    /**
     * Gets the "INVTOTALAMT" element
     */
    java.lang.String getINVTOTALAMT();
    
    /**
     * Gets (as xml) the "INVTOTALAMT" element
     */
    net.ofx.types.x2003.x04.AmountType xgetINVTOTALAMT();
    
    /**
     * Sets the "INVTOTALAMT" element
     */
    void setINVTOTALAMT(java.lang.String invtotalamt);
    
    /**
     * Sets (as xml) the "INVTOTALAMT" element
     */
    void xsetINVTOTALAMT(net.ofx.types.x2003.x04.AmountType invtotalamt);
    
    /**
     * Gets the "INVPAIDAMT" element
     */
    java.lang.String getINVPAIDAMT();
    
    /**
     * Gets (as xml) the "INVPAIDAMT" element
     */
    net.ofx.types.x2003.x04.AmountType xgetINVPAIDAMT();
    
    /**
     * Sets the "INVPAIDAMT" element
     */
    void setINVPAIDAMT(java.lang.String invpaidamt);
    
    /**
     * Sets (as xml) the "INVPAIDAMT" element
     */
    void xsetINVPAIDAMT(net.ofx.types.x2003.x04.AmountType invpaidamt);
    
    /**
     * Gets the "INVDATE" element
     */
    java.lang.String getINVDATE();
    
    /**
     * Gets (as xml) the "INVDATE" element
     */
    net.ofx.types.x2003.x04.DateTimeType xgetINVDATE();
    
    /**
     * Sets the "INVDATE" element
     */
    void setINVDATE(java.lang.String invdate);
    
    /**
     * Sets (as xml) the "INVDATE" element
     */
    void xsetINVDATE(net.ofx.types.x2003.x04.DateTimeType invdate);
    
    /**
     * Gets the "INVDESC" element
     */
    java.lang.String getINVDESC();
    
    /**
     * Gets (as xml) the "INVDESC" element
     */
    net.ofx.types.x2003.x04.ShortMessageType xgetINVDESC();
    
    /**
     * Sets the "INVDESC" element
     */
    void setINVDESC(java.lang.String invdesc);
    
    /**
     * Sets (as xml) the "INVDESC" element
     */
    void xsetINVDESC(net.ofx.types.x2003.x04.ShortMessageType invdesc);
    
    /**
     * Gets the "DISCOUNT" element
     */
    net.ofx.types.x2003.x04.Discount getDISCOUNT();
    
    /**
     * True if has "DISCOUNT" element
     */
    boolean isSetDISCOUNT();
    
    /**
     * Sets the "DISCOUNT" element
     */
    void setDISCOUNT(net.ofx.types.x2003.x04.Discount discount);
    
    /**
     * Appends and returns a new empty "DISCOUNT" element
     */
    net.ofx.types.x2003.x04.Discount addNewDISCOUNT();
    
    /**
     * Unsets the "DISCOUNT" element
     */
    void unsetDISCOUNT();
    
    /**
     * Gets the "ADJUSTMENT" element
     */
    net.ofx.types.x2003.x04.Adjustment getADJUSTMENT();
    
    /**
     * True if has "ADJUSTMENT" element
     */
    boolean isSetADJUSTMENT();
    
    /**
     * Sets the "ADJUSTMENT" element
     */
    void setADJUSTMENT(net.ofx.types.x2003.x04.Adjustment adjustment);
    
    /**
     * Appends and returns a new empty "ADJUSTMENT" element
     */
    net.ofx.types.x2003.x04.Adjustment addNewADJUSTMENT();
    
    /**
     * Unsets the "ADJUSTMENT" element
     */
    void unsetADJUSTMENT();
    
    /**
     * Gets array of all "LINEITEM" elements
     */
    net.ofx.types.x2003.x04.LineItem[] getLINEITEMArray();
    
    /**
     * Gets ith "LINEITEM" element
     */
    net.ofx.types.x2003.x04.LineItem getLINEITEMArray(int i);
    
    /**
     * Returns number of "LINEITEM" element
     */
    int sizeOfLINEITEMArray();
    
    /**
     * Sets array of all "LINEITEM" element
     */
    void setLINEITEMArray(net.ofx.types.x2003.x04.LineItem[] lineitemArray);
    
    /**
     * Sets ith "LINEITEM" element
     */
    void setLINEITEMArray(int i, net.ofx.types.x2003.x04.LineItem lineitem);
    
    /**
     * Inserts and returns a new empty value (as xml) as the ith "LINEITEM" element
     */
    net.ofx.types.x2003.x04.LineItem insertNewLINEITEM(int i);
    
    /**
     * Appends and returns a new empty value (as xml) as the last "LINEITEM" element
     */
    net.ofx.types.x2003.x04.LineItem addNewLINEITEM();
    
    /**
     * Removes the ith "LINEITEM" element
     */
    void removeLINEITEM(int i);
    
    /**
     * A factory class with static methods for creating instances
     * of this type.
     */
    
    public static final class Factory
    {
        public static net.ofx.types.x2003.x04.Invoice newInstance() {
          return (net.ofx.types.x2003.x04.Invoice) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().newInstance( type, null ); }
        
        public static net.ofx.types.x2003.x04.Invoice newInstance(org.apache.xmlbeans.XmlOptions options) {
          return (net.ofx.types.x2003.x04.Invoice) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().newInstance( type, options ); }
        
        public static net.ofx.types.x2003.x04.Invoice parse(java.lang.String s) throws org.apache.xmlbeans.XmlException {
          return (net.ofx.types.x2003.x04.Invoice) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().parse( s, type, null ); }
        
        public static net.ofx.types.x2003.x04.Invoice parse(java.lang.String s, org.apache.xmlbeans.XmlOptions options) throws org.apache.xmlbeans.XmlException {
          return (net.ofx.types.x2003.x04.Invoice) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().parse( s, type, options ); }
        
        public static net.ofx.types.x2003.x04.Invoice parse(java.io.File f) throws org.apache.xmlbeans.XmlException, java.io.IOException {
          return (net.ofx.types.x2003.x04.Invoice) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().parse( f, type, null ); }
        
        public static net.ofx.types.x2003.x04.Invoice parse(java.io.File f, org.apache.xmlbeans.XmlOptions options) throws org.apache.xmlbeans.XmlException, java.io.IOException {
          return (net.ofx.types.x2003.x04.Invoice) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().parse( f, type, options ); }
        
        public static net.ofx.types.x2003.x04.Invoice parse(java.net.URL u) throws org.apache.xmlbeans.XmlException, java.io.IOException {
          return (net.ofx.types.x2003.x04.Invoice) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().parse( u, type, null ); }
        
        public static net.ofx.types.x2003.x04.Invoice parse(java.net.URL u, org.apache.xmlbeans.XmlOptions options) throws org.apache.xmlbeans.XmlException, java.io.IOException {
          return (net.ofx.types.x2003.x04.Invoice) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().parse( u, type, options ); }
        
        public static net.ofx.types.x2003.x04.Invoice parse(java.io.InputStream is) throws org.apache.xmlbeans.XmlException, java.io.IOException {
          return (net.ofx.types.x2003.x04.Invoice) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().parse( is, type, null ); }
        
        public static net.ofx.types.x2003.x04.Invoice parse(java.io.InputStream is, org.apache.xmlbeans.XmlOptions options) throws org.apache.xmlbeans.XmlException, java.io.IOException {
          return (net.ofx.types.x2003.x04.Invoice) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().parse( is, type, options ); }
        
        public static net.ofx.types.x2003.x04.Invoice parse(java.io.Reader r) throws org.apache.xmlbeans.XmlException, java.io.IOException {
          return (net.ofx.types.x2003.x04.Invoice) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().parse( r, type, null ); }
        
        public static net.ofx.types.x2003.x04.Invoice parse(java.io.Reader r, org.apache.xmlbeans.XmlOptions options) throws org.apache.xmlbeans.XmlException, java.io.IOException {
          return (net.ofx.types.x2003.x04.Invoice) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().parse( r, type, options ); }
        
        public static net.ofx.types.x2003.x04.Invoice parse(org.w3c.dom.Node node) throws org.apache.xmlbeans.XmlException {
          return (net.ofx.types.x2003.x04.Invoice) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().parse( node, type, null ); }
        
        public static net.ofx.types.x2003.x04.Invoice parse(org.w3c.dom.Node node, org.apache.xmlbeans.XmlOptions options) throws org.apache.xmlbeans.XmlException {
          return (net.ofx.types.x2003.x04.Invoice) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().parse( node, type, options ); }
        
        public static net.ofx.types.x2003.x04.Invoice parse(org.apache.xmlbeans.xml.stream.XMLInputStream xis) throws org.apache.xmlbeans.XmlException, org.apache.xmlbeans.xml.stream.XMLStreamException {
          return (net.ofx.types.x2003.x04.Invoice) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().parse( xis, type, null ); }
        
        public static net.ofx.types.x2003.x04.Invoice parse(org.apache.xmlbeans.xml.stream.XMLInputStream xis, org.apache.xmlbeans.XmlOptions options) throws org.apache.xmlbeans.XmlException, org.apache.xmlbeans.xml.stream.XMLStreamException {
          return (net.ofx.types.x2003.x04.Invoice) org.apache.xmlbeans.XmlBeans.getContextTypeLoader().parse( xis, type, options ); }
        
        public static org.apache.xmlbeans.xml.stream.XMLInputStream newValidatingXMLInputStream(org.apache.xmlbeans.xml.stream.XMLInputStream xis) throws org.apache.xmlbeans.XmlException, org.apache.xmlbeans.xml.stream.XMLStreamException {
          return org.apache.xmlbeans.XmlBeans.getContextTypeLoader().newValidatingXMLInputStream( xis, type, null ); }
        
        public static org.apache.xmlbeans.xml.stream.XMLInputStream newValidatingXMLInputStream(org.apache.xmlbeans.xml.stream.XMLInputStream xis, org.apache.xmlbeans.XmlOptions options) throws org.apache.xmlbeans.XmlException, org.apache.xmlbeans.xml.stream.XMLStreamException {
          return org.apache.xmlbeans.XmlBeans.getContextTypeLoader().newValidatingXMLInputStream( xis, type, options ); }
        
        private Factory() { } // No instance of this class allowed
    }
}
